#define _CRT_SECURE_NO_WARNINGS 1

#include <iostream>
using namespace std;

//int main()
//{
//	string s1 = "9";
//	int x = 0;
//	x = s1[s1.size() - 1] - 48;
//	cout << x << endl;
//
//	x += '0';
//	cout << x << endl;
//
//	x = 7;
//	//s1.push_back(x + '0');
//	s1 += x + '0';
//	cout << s1 << endl;
//
//	const char* s = s1.c_str();
//	cout << *s << endl;
//
//	return 0;
//}

#include <cstring>
#include <string>

#include <stdio.h>
#include <string.h>

//int main()
//{
//    char str[] = "- This, a sample string.";
//    char* pch;
//    printf("Splitting string \"%s\" into tokens:\n", str);
//    pch = strtok(str, " ,.-");
//    while (pch != NULL)
//    {
//        printf("%s\n", pch);
//        pch = strtok(NULL, " ,.-");
//    }
//    return 0;
//}

//int main()
//{
//	std::string str("Please split this sentence into tokens");
//
//	char* cstr = new char[str.length() + 1];
//	std::strcpy(cstr, str.c_str());
//
//	// cstr now contains a c-string copy of str
//
//	char* p = std::strtok(cstr, " ");
//	while (p != 0)
//	{
//		std::cout << p << '\n';
//		p = std::strtok(NULL, " ");
//	}
//
//	delete[] cstr;
//	return 0;
//}


//class Solution {
//public:
//    string reverseStr(string s, int k) {
//        int begin = 0;
//        int size = s.size();
//        while (size >= 2 * k)
//        {
//            reverse(s.begin() + begin, s.begin() + begin + k);
//            begin = 2 * k - 1;
//            size -= 2 * k;
//        }
//        if (size < k)
//        {
//            reverse(s.begin(), s.end());
//        }
//        if (size >= k && size < 2 * k)
//        {
//            reverse(s.begin(), s.begin() + k);
//        }
//
//        return s;
//    }
//};
//
//int main()
//{
//    Solution t1;
//    string s1 = "abcdefg";
//    cout << t1.reverseStr(s1, 2) << endl;
//    return 0;
//}


//int main()
//{
//	std::string str("Please split this sentence into tokens");
//
//	char* cstr = new char[str.length() + 1];
//	std::strcpy(cstr, str.c_str());
//
//	cout << cstr << endl;
//
//	str.append(" hhhh");
//	cout << str << endl;
//	
//
//	return 0;
//}


//class Solution {
//public:
//    string reverseWords(string s) {
//        int begin_1 = 0;
//        int begin_2 = 0;
//        while (begin_1 <= s.size() - 1)
//        {
//            if (s[begin_1] == 32)
//            {
//                reverse(s.begin() + begin_2, s.begin() + begin_1 - 1);
//                begin_2 = begin_1 + 1;
//            }
//            ++begin_1;
//        }
//
//        return s;
//    }
//};
//
//int main()
//{
//    Solution t1;
//    cout << t1.reverseWords("Let's take LeetCode contest") << endl;
//
//    string s1 = "sdja'ddw";
//    reverse(s1.begin(), s1.end());
//    cout << s1 << endl;
//    return 0;
//}

//int main()
//{
//    std::string str = "We think in generalities, but we live in details.";
//    // (quoting Alfred N. Whitehead)
//
//    std::string str2 = str.substr(3, 5);     // "think"
//
//    std::size_t pos = str.find("live");      // position of "live" in str
//
//    std::string str3 = str.substr(pos);     // get from "live" to the end
//
//    std::cout << str2 << ' ' << str3 << '\n';
//
//    return 0;
//}


//class Solution {
//public:
//    string reverseOnlyLetters(string s) {
//        int begin = 0;
//        int end = s.size() - 1;
//        while (begin <= end)
//        {
//            if (((s[begin] >= 65 && s[begin] <= 90) ||
//                 (s[begin] >= 97 && s[begin] <= 122)) &&
//                ((s[end] >= 65 && s[end] <= 90) ||
//                 (s[end] >= 97 && s[end] <= 122)))
//            {
//                swap(s[begin++], s[end--]);
//            }
//            else if (((s[begin] >= 65 &&
//                s[begin] <= 90) ||
//                (s[begin] >= 97 &&
//                    s[begin] >= 122)) &&
//                !((s[end] >= 65 &&
//                    s[end] <= 90) ||
//                    (s[end] >= 97 &&
//                        s[end] <= 122)))
//            {
//                --end;
//            }
//            else if (!((s[begin] >= 65 &&
//                s[begin] <= 90) ||
//                (s[begin] >= 97 &&
//                    s[begin] >= 122)) &&
//                ((s[end] >= 65 &&
//                    s[end] <= 90) ||
//                    (s[end] >= 97 &&
//                        s[end] <= 122)))
//            {
//                ++begin;
//            }
//            else
//            {
//                ++begin;
//                --end;
//            }
//        }
//
//        return s;
//    }
//};

//int main()
//{
//    Solution s1;
//    cout << s1.reverseOnlyLetters("ab-cd") << endl;
//
//    return 0;
//}

//#include <iostream>
//#include <string>
//using namespace std;
//
//int main() {
//    int str[256] = { 0 };
//    string s1;
//    cin >> s1;
//    int begin = 0;
//    while (begin < s1.size() - 1)
//    {
//        str[s1[begin]] += 1;
//        begin++;
//    }
//
//    begin = 0;
//    int t = 0;
//    while (begin < 256)
//    {
//        if (str[begin] == 1)
//        {
//            t = 1;
//            cout << (char)begin << endl;
//            break;
//        }
//        begin++;
//    }
//    if (t == 0)
//    {
//        cout << -1 << endl;
//    }
//    return 0;
//}


int main(int argc, char* argv[])
{

	string strText = "How are you?";

	string strSeparator = " ";

	string strResult;

	int size_pos = 0;

	int size_prev_pos = 0;

	while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)

	{

		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);

		cout << strResult << " ";

		size_prev_pos = ++size_pos;

	}

	if (size_prev_pos != strText.size())

	{

		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);

		cout << strResult << " ";

	}

	cout << endl;

	return 0;

}

